namespace MLSharp.SubgroupDiscovery
{
	/// <summary>
	/// Options for performing the SD algorithm.
	/// </summary>
	public class SDOptions
	{
		/// <summary>
		/// The generalization factor.
		/// </summary>
		/// <value>The default is 1.</value>
		public double GeneralizationFactor { get; set; }

		/// <summary>
		/// The number of rules to keep at each step of the beam search.
		/// </summary>
		/// <value>The default is 20.</value>
		public int BeamWidth { get; set; }

		/// <summary>
		/// The minimum support score that a rule must have to be kept.
		/// </summary>
		/// <value>The default is 0, in which case it will be set to sqrt(sizeof(Positives))/sizeof(DataSet).</value>
		public double MinSupport { get; set; }

		/// <summary>
		/// The index of the positive value in the attribute's possible values.  
		/// </summary>
		/// <value>The default is 0, meaning the positive value must be the first item in the possible values array.</value>
		public int PositiveValueIndex { get; set; }

		/// <summary>
		/// Initializes properties to their default values.
		/// </summary>
		public SDOptions()
		{
			BeamWidth = 20;
			MinSupport = 0;
			GeneralizationFactor = 1;
			PositiveValueIndex = 0;
		}
	}
}